// Vite 配置文件 - 现代化前端构建工具配置
// Vite 是一个快速的开发服务器和构建工具，专为现代Web项目设计

// 导入Vite的核心功能
import { defineConfig, loadEnv } from 'vite' // defineConfig: 定义配置的函数；loadEnv: 加载环境变量
import react from '@vitejs/plugin-react' // Vite的React插件，支持React热更新等特性
import path from 'node:path' // Node.js的路径模块，用于处理文件路径
import { vitePluginFakeServer } from 'vite-plugin-fake-server' // 模拟服务器插件，用于开发时模拟API数据

// 导出默认配置：使用defineConfig函数定义Vite配置
// mode参数：当前模式（'development'开发模式或'production'生产模式）
export default defineConfig(({ mode }) => {
  // 加载环境变量：根据当前模式加载对应的.env文件中的变量
  const env = loadEnv(mode, process.cwd())
  
  // 返回配置对象
  return {
    // plugins: 配置Vite插件
    plugins: [
      react(), // 启用React插件
      vitePluginFakeServer({ // 启用模拟服务器插件
        include: 'src/mock', // 模拟数据文件所在目录
        infixName: false, // 不修改文件名
        logger: true, // 启用日志记录
        enableProd: false // 在生产环境中禁用模拟
      })
    ],
    
    // server: 开发服务器配置
    server: {
      open: false, // 启动后不自动打开浏览器
      host: true, // 允许通过网络访问开发服务器
      port: 9000, // 开发服务器端口号
      proxy: { // 代理配置：将API请求转发到后端服务器
        '/proxy': { // 代理路径前缀
          target: env.VITE_APP_API_BASEURL, // 目标服务器地址（从环境变量读取）
          changeOrigin: true, // 修改请求头中的Origin为目标地址
          rewrite: (path) => path.replace(/\/proxy/, ''), // 重写路径：移除/proxy前缀
        },
        // 注释：移除了member-api代理，让Mock.js直接拦截这些请求
        // Mock.js会拦截所有匹配的API请求，不需要Vite代理
      },
    },
    
    // resolve: 模块解析配置
    resolve: {
      alias: { // 路径别名：简化导入路径
        '@': path.resolve(__dirname, 'src'), // @/ 表示src目录
        '#': path.resolve(__dirname, 'src/types'), // #/ 表示src/types目录
      },
    },
    
    // css: CSS相关配置
    css: {
      preprocessorOptions: { // 预处理器选项
        scss: { // SCSS配置（虽然项目主要用Tailwind，但保留了SCSS支持）
          api: 'modern-compiler', // 使用现代编译器API
        },
      },
    },
  }
})
